package priv.mill.arr;

import java.util.Arrays;

public class ArraySearch {

	public static void main(String[] args) {
//		search();
		dituitest(10);
	}



	private static int dituitest(int i) {
		if(i==1)return 1;
		return dituitest(i-1)+i;
	}



	private static void search() {
		int[] arr = new int[12];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = i * 2;
		}
		
		int index = erFenSearchDiGui(arr, 8, 0, arr.length - 1);
		System.out.println(index);
		System.out.println(Arrays.toString(arr));
	}



	private static int erFenSearchDiGui(int[] arr, int i, int down, int up) {
		int cur = (up + down) / 2; // 去下标中间值
		if (arr[cur] == i) { // 如果当前值等于要查找的值则说明找到了
			return cur;
		} else if (down > up) { // 如果最小值大于最大值则说明没有该值
			return -1;
		} else {
			if (arr[cur] > i) { // 如果当前值大于要找的值，则从小的一边找
				return erFenSearchDiGui(arr, i, down, cur - 1);
				// up = cur - 1;
			} else { // 否则从大的一边找
				return erFenSearchDiGui(arr, i, cur + 1, up);
				// down = cur + 1;
			}
		}

	}

	private static int erFenSearch(int[] arr, int i) {
		int up = arr.length - 1; // 数组的最大下标
		int down = 0; // 数组的最小下标
		while (true) {
			int cur = (up + down) / 2; // 去下标中间值
			if (arr[cur] == i) { // 如果当前值等于要查找的值则说明找到了
				return cur;
			} else if (down > up) { // 如果最小值大于最大值则说明没有该值
				return -1;
			} else {
				if (arr[cur] > i) { // 如果当前值大于要找的值，则从小的一边找
					up = cur - 1;
				} else { // 否则从大的一边找
					down = cur + 1;
				}
			}
		}

	}

	private static void lineSearch() {
		// 线性查找
		int[] arr = { 12, 56, 88, 12, 33, 78, 98, 102, 1, 3, 9, 2 };
		int j;
		for (j = 0; j < arr.length; j++) {
			if (arr[j] == 33)
				break;
		}
		System.out.println(j);
	}
}
